﻿Public Class MitarbeiterSelectorServiceImpl
    Inherits ServiceImpl(Of MitarbeiterSelectorModelListener)
    Implements MitarbeiterSelectorService
    Implements MitarbeiterPersistenceListener

    Private mitarbeiter As List(Of Mitarbeiter)

    Public Sub New()
        Context.MITARBEITER_SERVICE.getObservable().addListener(Me)
    End Sub

    Private Sub refreshMitarbeiter()
        Connection.open()
        Me.mitarbeiter = Context.MITARBEITER_SERVICE.findAll()
        Connection.open()
        fireMitarbeiterChange(Me.mitarbeiter)
    End Sub

    Private Sub fireMitarbeiterChange(ByRef mitarbeiter As List(Of Mitarbeiter))
        For Each listener As MitarbeiterSelectorModelListener In getObservable().getListeners()
            listener.onMitarbeiterChange(mitarbeiter)
        Next
    End Sub

    Public Sub refreshData() Implements MitarbeiterSelectorService.refreshData
        Me.refreshMitarbeiter()
    End Sub

    Public Sub onDeleted(ByRef entity As Mitarbeiter) Implements PersistenceListener(Of Mitarbeiter).onDeleted
        Me.mitarbeiter.Remove(entity)
        fireMitarbeiterChange(Me.mitarbeiter)
    End Sub

    Public Sub onSaved(ByRef entity As Mitarbeiter) Implements PersistenceListener(Of Mitarbeiter).onSaved
        ListUtil.updateOrAddToList(Me.mitarbeiter, entity)
        fireMitarbeiterChange(Me.mitarbeiter)
    End Sub
End Class
